home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 56804 / 56804.xpi / chrome / content / gprAlg.js < prev    next >
Text File  |  2010-01-31  |  7KB  |  250 lines

  1. if(!com) var com={};
  2. if(!com.seostatus) com.seostatus={};
  3.  
  4. com.seostatus.gprAlg =  function(){
  5.   var pub = {};
  6.   /************************************************************\
  7.   *
  8.   \************************************************************/
  9.   pub.hexdec = function(str)
  10.   {
  11.       return parseInt(str,16);
  12.   }
  13.   
  14.   /************************************************************\
  15.   *
  16.   \************************************************************/
  17.   pub.zeroFill = function(a,b)
  18.   {
  19.       var z = pub.hexdec(80000000);
  20.       if (z & a)
  21.       {
  22.           a = a>>1;
  23.           a &= ~z;
  24.           a |= 0x40000000;
  25.           a = a>>(b-1);
  26.       }
  27.       else
  28.       {
  29.           a = a >> b;
  30.       }
  31.       return (a);
  32.   }
  33.   
  34.   /************************************************************\
  35.   *
  36.   \************************************************************/
  37.   pub.mix = function(a,b,c)
  38.   {
  39.       a -= b; a -= c; a ^= (pub.zeroFill(c,13));
  40.       b -= c; b -= a; b ^= (a<<8);
  41.       c -= a; c -= b; c ^= (pub.zeroFill(b,13));
  42.       a -= b; a -= c; a ^= (pub.zeroFill(c,12));
  43.       b -= c; b -= a; b ^= (a<<16);
  44.       c -= a; c -= b; c ^= (pub.zeroFill(b,5));
  45.       a -= b; a -= c; a ^= (pub.zeroFill(c,3));
  46.       b -= c; b -= a; b ^= (a<<10);
  47.       c -= a; c -= b; c ^= (pub.zeroFill(b,15));
  48.       var ret = new Array((a),(b),(c));
  49.       return ret;
  50.   }
  51.   
  52.   /************************************************************\
  53.   *
  54.   \************************************************************/
  55.   pub.GoogleCH = function(url,length)
  56.   {
  57.       var init = 0xE6359A60;
  58.       if (arguments.length == 1)
  59.           length = url.length;   
  60.       var a = 0x9E3779B9;
  61.       var b = 0x9E3779B9;
  62.       var c = 0xE6359A60;
  63.       var k = 0;
  64.       var len = length;
  65.       var mixo = new Array();
  66.       while(len >= 12)
  67.       {
  68.           a += (url[k+0] +(url[k+1]<<8) +(url[k+2]<<16) +(url[k+3]<<24));
  69.           b += (url[k+4] +(url[k+5]<<8) +(url[k+6]<<16) +(url[k+7]<<24));
  70.           c += (url[k+8] +(url[k+9]<<8) +(url[k+10]<<16)+(url[k+11]<<24));
  71.           mixo = pub.mix(a,b,c);
  72.           a = mixo[0]; b = mixo[1]; c = mixo[2];
  73.           k += 12;
  74.           len -= 12;
  75.       }
  76.       c += length;
  77.       switch(len)
  78.       {
  79.           case 11:
  80.           c += url[k+10]<<24;
  81.           case 10:
  82.           c+=url[k+9]<<16;
  83.           case 9 :
  84.           c+=url[k+8]<<8;
  85.           case 8 :
  86.           b+=(url[k+7]<<24);
  87.           case 7 :
  88.           b+=(url[k+6]<<16);
  89.           case 6 :
  90.           b+=(url[k+5]<<8);
  91.           case 5 :
  92.           b+=(url[k+4]);
  93.           case 4 :
  94.           a+=(url[k+3]<<24);
  95.           case 3 :
  96.           a+=(url[k+2]<<16);
  97.           case 2 :
  98.           a+=(url[k+1]<<8);
  99.           case 1 :
  100.           a+=(url[k+0]);
  101.       }
  102.       mixo = pub.mix(a,b,c);
  103.       if (mixo[2] < 0)
  104.       return (0x100000000 + mixo[2]);
  105.       else
  106.       return mixo[2];
  107.   }
  108.   
  109.   /************************************************************\
  110.   *
  111.   \************************************************************/
  112.   pub.strord = function(string)
  113.   {
  114.       var result = new Array();
  115.       for(i=0;i<string.length;i++)
  116.       {
  117.           result[i] = string[i].charCodeAt(0);
  118.       }
  119.       return result;
  120.   }
  121.   /************************************************************\
  122.   *
  123.   \************************************************************/
  124.   pub.c32to8bit = function(arr32) 
  125.   {
  126.       var arr8 = new Array();    
  127.       for(i=0;i<arr32.length;i++) 
  128.       {
  129.           for (bitOrder=i*4;bitOrder<=i*4+3;bitOrder++) 
  130.           {
  131.               arr8[bitOrder]=arr32[i]&255;
  132.               arr32[i]=pub.zeroFill(arr32[i], 8);
  133.           }
  134.       }
  135.       return arr8;
  136.   }
  137.   /************************************************************\
  138.   *
  139.   \************************************************************/
  140.  pub.myfmod = function(x,y)
  141.   {
  142.       var i = Math.floor(x/y);
  143.           return (x - i*y);
  144.   }
  145.   
  146.   /************************************************************\
  147.   *
  148.   \************************************************************/
  149.   pub.GoogleNewCh = function(ch)
  150.   {
  151.       ch = (((ch/7) << 2) | ((pub.myfmod(ch,13))&7));
  152.   
  153.       prbuf = new Array();
  154.       prbuf[0] = ch;
  155.       for(i = 1; i < 20; i++) {
  156.                 prbuf[i] = prbuf[i-1]-9;
  157.       }
  158.       ch = pub.GoogleCH(pub.c32to8bit(prbuf), 80);
  159.       return ch;
  160.           
  161.   }
  162.   
  163.   pub.gXMLHttpRequest;
  164.   pub.glastpr;
  165.   
  166.   
  167.   
  168.   pub.gch = 0;
  169.   
  170.   
  171.   
  172.   
  173.   /************************************************************\
  174.   *
  175.   \************************************************************/
  176.   pub.setPagerankStatus = function()
  177.   {
  178.        var temp = pub.gXMLHttpRequest.responseText;
  179.        if (temp){
  180.          
  181.             var foo = temp.match(/Rank_.*?:.*?:(\d+)/i);
  182.             
  183.             var pr = (foo) ? foo[1] : "-1";
  184.             foo = temp.match(/FVN_.*?:.*?:(?:Top\/)?([^\s]+)/i);
  185.             var cat = (foo) ? foo[1] : "n/a";
  186.               var iscat = (cat=="n/a") ? "" : "cat";
  187.             //alert (temp);
  188.             pub.glastpr = pr;
  189.             
  190.       }
  191.       else{
  192.           //alert("temp was null!!!");
  193.           pub.glastpr = 0;
  194.       }
  195.         var prBut = document.getElementById('changeMe'); 
  196.       var prButSB = document.getElementById('SEOTB-PR-status');    
  197.       prBut.setAttribute("tooltiptext", "PageRank: "+pub.glastpr+"/10");    
  198.       prBut.setAttribute("image", "chrome://seostatus/skin/pr/Pagerank"+pub.glastpr+".jpg");
  199.       prButSB.setAttribute("tooltiptext", "PageRank: "+pub.glastpr+"/10"); 
  200.       prButSB.setAttribute("src", "chrome://seostatus/skin/pr/pr"+pub.glastpr+".png");
  201.       
  202.   }
  203.   
  204.   /************************************************************\
  205.   *
  206.   \************************************************************/
  207.   /*function URLencode(sStr) {
  208.       return escape(sStr).replace(/\+/g, '%2B').replace(/[ ]/g,'+').replace(/\//g,'%2F').replace(/~/g,'%7E');
  209.   }
  210.   */
  211.   pub.URLencode = function(sStr)
  212.   {
  213.   return encodeURIComponent(sStr).replace(/\+/g,"%2B").replace(/\//g,"%2F");
  214.   }
  215.   /************************************************************\
  216.   *
  217.   \************************************************************/
  218.   pub.initPagerankStatus = function(sentURL)
  219.   {
  220.    
  221.          var prBut = document.getElementById('changeMe'); 
  222.       var prButSB = document.getElementById('SEOTB-PR-status');
  223.       prBut.setAttribute("tooltiptext", "PageRank: Computing..."); 
  224.       prBut.setAttribute("image", "chrome://seostatus/skin/pr/aprThink.gif");
  225.       prButSB.setAttribute("tooltiptext", "PageRank: Computing..."); 
  226.       prButSB.setAttribute("src", "chrome://seostatus/skin/pr/prN.gif");
  227.    
  228.       var url = new String(sentURL);
  229.       url = url.replace(/\?.*$/g,'?');
  230.       
  231.       var reqgr = "info:" + url;
  232.       var reqgre = "info:" + pub.URLencode(url);
  233.       pub.gch = pub.GoogleCH(pub.strord(reqgr));
  234.       pub.gch = "6" + pub.GoogleNewCh(pub.gch);
  235.   
  236.       var querystring = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=" + pub.gch + "&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=" + reqgre;
  237.   
  238.           pub.gXMLHttpRequest = new XMLHttpRequest();
  239.           pub.gXMLHttpRequest.onload = pub.setPagerankStatus;
  240.           pub.gXMLHttpRequest.open("GET", querystring);
  241.           //alert("i am here just did GET");
  242.           pub.gXMLHttpRequest.setRequestHeader("User-Agent","Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)");
  243.           pub.gXMLHttpRequest.send(null);
  244.           //alert("i am here just did send");
  245.   
  246.       
  247.   }
  248.   return pub;
  249. }();
  250.